<?php
class EditActionController
{
	private $view;
	private $args;
	
	public function setView(View $view) { 
		$this->view = $view; 
		return $this;
	} 
	//вызывается из фабрики
	public function setArgs($args = null) { 
		if(null != $args) { 
			$this->args = $args;
		}
		
		return $this->args; 
	} 

	public function run() {
		if (!isset($_SESSION['user'])) {
			header('Location: index.php');
		} else {
			if (isset($this->args['get']['create'])) {
				$user = unserialize($_SESSION['user']);
				$role = $user->getRole();
				if ($role == 3) {
					$error = 'Вы не можете оставлять статьи';
						$this->view->setError($error);
				}
				$mapperTags = new MapperTags();
				$tags = $mapperTags->getAllTags();
				$this->view->setTags($tags);
				$this->view->setRenderTemplate("create.php");	
				if (isset($this->args['post']['create'])) {
					$mapperArticles = new MapperArtiles();
					$autorId = $this->view->getIdUser();
					$idCreateArticle = $mapperArticles->createArticle($autorId, $this->args['post']['title'], $this->args['post']['article'], $this->args['post']['tags'], $this->args['post']['video']);
					if (isset($idCreateArticle)) {
						for ($i = 0; $i < count($tags); $i++) {
							if (!empty($this->args['post']['tags'.$tags[$i]->getId()])) {
								$thereTags = array();
								$addTags = $mapperArticles->addTags($idCreateArticle, $tags[$i]->getId());
							}
						}

						header('Location: index.php');
					} else {
						$error = 'Ошибка при добавлении';
						$this->view->setError($error);
					}
				}
			}
			if (isset($this->args['get']['del'])) {
			//при удалении статьи удалять все комментарии которые к ней относятся
				$mapperArticles = new MapperArtiles();
				$article = $mapperArticles->getOneArticle($this->args['get']['del']);
				if (!empty($article)) {
					$autorName = $article->getAutor();
					$user = unserialize($_SESSION['user']);
					$userName = $user->getName();
					$userRole = $user->getRole();
					if ($autorName == $userName OR $userRole == 1) {
						$id = $article->getId();
						$del = $mapperArticles->delArticle($id);
						if ($del) {
							$error = 'Cтатья успешно удалена';
							$this->view->setError($error);
						} else {
							$error = 'Ошибка при удалении';
							$this->view->setError($error);
						}
					} else {
						$error = 'Эта статья другого автора';
						$this->view->setError($error);
					}
				} else {
					$error = 'Такой статьи не существует';
					$this->view->setError($error);
				}
				$this->view->setRenderTemplate("editor.phtml");	
			} 
			if (isset($this->args['get']['id'])) {
				$mapperArticles = new MapperArtiles();
				$article = $mapperArticles->getOneArticle($this->args['get']['id']);
				if (!empty($article)) {
					$autorName = $article->getAutor();
					$user = unserialize($_SESSION['user']);
					$userName = $user->getName();
					$userRole = $user->getRole();
					if ($autorName == $userName OR $userRole == 1) {
						$this->view->setArticles($article);
					} else {
						$error = 'Эта статья другого автора';
						$this->view->setError($error);
					}
				} else {
					$error = 'Статья не найдена';
					$this->view->setError($error);
				}
				$this->view->setRenderTemplate("editor.phtml");	
				if (isset($this->args['post']['edit'])) {
					$id = $article->getId();
					$edit = $mapperArticles->editArticle($id, $this->args['post']['title'], $this->args['post']['article'], $this->args['post']['tags']);
					if ($edit) {
					header("Location: index.php?controller=article&id={$this->args['get']['id']}");	
					} else {
						$error = 'Ошибка при редактировании';
						$this->view->setError($error);
					}
				}	
			}
		}
		
	}	
}
